#pragma once
#include "wlroots.hpp"
#include "utils.h"
#include "server.h"

#include <sigc++/sigc++.h>

#include <list>
#include <array>

class SeatWrapper
{
public:
    SeatWrapper(Server* server);
    ~SeatWrapper();

    inline wlr_seat* seat() { return m_seat; }

    sigc::signal<void(struct wlr_surface*, int32_t, int32_t)> sig_request_cursor; //surface, hotspot_x, hotspot_y


private:
    void request_cursor(struct wlr_seat_pointer_request_set_cursor_event *event);
    void request_set_selection(struct wlr_seat_request_set_selection_event *event);

private:
    Server *m_server;

    struct wlr_seat *m_seat;
    wl_listener_wrapper m_request_cursor;
    wl_listener_wrapper m_request_set_selection;
};
